#ifndef SEMAFORO_H_
#define SEMAFORO_H_

#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/types.h>
#include <errno.h>

#include "logger.h"

class Semaforo {

private:
	int id;
	int valorInicial;
	int cantidadSemaforos ;

	int inicializar(int posSem, int valor);

public:
	int inicializar(int valoresIniciales[]);

	/* construye una instancia con un grupo de cantidadSemaforos semaforos
	 */
	Semaforo(const char* nombre, int cantidadSemaforos);

	virtual ~Semaforo();
	int p(int numSem = 0); // decrementa
	int v(int numSem = 0); // incrementa
	int getValor(int numSem = 0);
	void eliminar();
};
#endif /* SEMAFORO_H_ */

